package org.stvd.common.utils;

import java.util.Random;

import org.stvd.core.jdbc.sequence.SequenceUtil;

public class ServiceUtils {

	/**
	 * 生成随机码
	 * @param count 要生成的随机码的位数
	 * @param type 要生成的随机码的类型：0-英文数字混合；1-纯英文；2-纯数字
	 * @return
	 */
	public static String getRandomCode(int count, String type) {
		String val = "";
		Random random = new Random();
		for (; val.length()<count;) {
			//输出字母还是数字
			String charOrNum = (random.nextInt(2)%2==0) ? "char" : "num";
			if ((type.equals("0") || type.equals("1"))
					&& "char".equalsIgnoreCase(charOrNum)) {
				//字符串
				int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;
				//取得大写字母还是小写字母
				val += (char) (choice+random.nextInt(26));
			} else if ((type.equals("0") || type.equals("2"))
					&& "num".equalsIgnoreCase(charOrNum)) {
				// 数字
				val += String.valueOf(random.nextInt(10));
			}
		}
		return val;
	}
	
	/**
     * 获取内部编号
     * @return
     */
    public static String getInnerCode(String idPrefix) {
        return SequenceUtil.getInstance().getId(idPrefix, idPrefix, 4);
    }
    
    /**
     * 获取上报编码
     * @return
     */
    public static String getReportCode(String idPrefix) {
    	return SequenceUtil.getInstance().getId(idPrefix, idPrefix, 4);
    }
}
